VPC Privatelink Resource Endpoint 로 다른 VPC의 리소스에 접속하기
안녕하세요 클래스메소드의 이수재입니다.
리소스를 다른 vpc에 공유할 수 있는 리소스 엔드포인트가 추가되었다는 뉴스가 있었습니다.
이번 글에서는 해당 업데이트에 대해 알아보려 합니다.
업데이트 내용
VPC Lattice의 Resource Gateway, Resource Configuration 을 만든 후 리소스 게이트웨이에 엔드포인트를 추가하여 다른 VPC나 다른 어카운트에서 연결 할 수 있게되었습니다.
이를 통해 기존에는 다른 VPC 혹은 다른 계정의 VPC의 RDS 등의 리소스에 접속하기 위해서는 VPC Peering 나 다른 방식으로 VPC 전체를 공유해야 했지만 이제부터는 리소스에 대한 엔드포인트만을 제공하여 좀 더 보안적으로 안전하게 리소스를 공유할 수 있게 되었습니다.
만들어보기
이번 글에서는 다음 구성도와 같이 다른 VPC의 EC2에서 RDS로 연결할 수 있도록 구성해보겠습니다.
전제조건은 다음과 같습니다.
- EC2와 RDS는 다른 VPC 에 생성되어 있음
- RDS는 퍼블릭 액세스를 허용하지 않는 상태
Resource Gateway 만들기
VPC 콘솔에서 PrivateLink and Lattice 탭의 Resource Gateways 에 액세스합니다.
여기서 Resource Gateway를 생성합니다.
Gateway는 RDS와 같은 VPC에 생성합니다.
보안 그룹은 접속하려는 서버를 액세스를 허용하도록 설정합니다.
생성이 완료되면 다음과 같이 Configuration을 확인할 수 있는 화면이 표시됩니다.
Resource Configuration 만들기
Gateway를 생성이 완료되면 바로 Configuration을 생성합니다.
이번에는 단일 리소스(RDS)에 연결을 허용하는 설정을 만들기 때문에 이미지와 같이 설정하였습니다.
이번에는 대상이 RDS이기 때문에 Configuration Type은 Resource를 선택합니다.
그리고 Type은 ARN을 선택하고 아래의 ARN resource definition에서 대상 RDS를 선택합니다.
설정 값에 문제가 없다면 Configuration을 생성합니다.
설정 값에 문제가 없다면 Type이 ARN인 Configuration과 Child인 Configuration이 생성됩니다.
VPC Privatelink 만들기
Configuration까지 생성이 끝났다면 이어서 Privatelink Resource Endpoint를 생성합니다.
이번에 새로 추가된 기능으로 VPC의 PrivateLink and Lattice 탭에서 생성할 수 있습니다.
설정 값은은 다음 이미지와 같습니다.
Resource Configuration은 함께 생성된 Type이 Child인 Configuration을 선택합니다.[^1]
VPC는 RDS에 연결할 EC2가 있는 VPC에 생성하여야합니다.
Resource Endpoint의 호스트 네임은 다음과 같이 설정됩니다.
endpoint_id.rcfgId.randomHash.vpc-lattice-rsc.region.on.aws
생성된 엔드포인트의 DNS Name은 Associations에서 확인할 수 있습니다.
이 외에 공식 문서에 호스트 네임과 해석에 대한 방법에 설명되어 있으므로 참고해주세요.
마지막으로 보안 그룹은 접속하려는 서버를 액세스를 허용하도록 설정합니다.
마무리
위에서 언급했듯이 이번 업데이트를 통해서 좀 더 안전하게 리소스를 공유할 수 있게 되었습니다.
특히 VPC Peering 은 여러 조건들도 신경써야 했는데 그런 점들도 신경쓰지 않고 공유할 수 있게 되어서 많이 편해졌네요.
긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.
[^1] : 두 Configuraion의 상세에서 확인해보면 Child는 DNS Name이 지정되어 있지만 ARN은 이름 그대로 ARN이 지정되어있습니다. 따라서 ARN인 Configuration과 Endpoint를 연결하려하면 inaccessible이 되어 실패합니다.